package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.entity.PublishInfo;

import java.util.List;

/**
 * @author yaohu
 * @date 2021/12/18
 * @Version 1.0
 * @describe
 */
public interface PublishInfoApi {
    /**
     * 保存审核后信息
     *
     * @param publishInfo
     */
    void savePublishInfo(PublishInfo publishInfo);

    /**
     * 查询审核通过的个人圈子信息及排序
     *
     * @param page      当前页码
     * @param pagesize  每页页数
     * @param sortProp  排序字段 reportCount likeCount commentCount forwardingCount 默认createDate
     * @param sortOrder 排序规则 ascending 默认descending
     * @param userId    用户id
     * @return
     */
    List<PublishInfo> queryAllPublishByUserId(Integer pagesize, Integer page, String userId, String sortProp, String sortOrder);

    /**
     * 分页正序查询审核信息
     *
     * @param pagesize
     * @param page
     * @param likeId
     * @param startDate
     * @param endDate
     * @return
     */
    List<PublishInfo> queryPassPublishInfo(Integer pagesize, Integer page, Integer likeId, String startDate, String endDate);

    /**
     * 倒序查全部
     *
     * @param pagesize
     * @param page
     * @param likeId
     * @param startDate
     * @param endDate
     * @return
     */
    List<PublishInfo> queryAllPublishInfo(Integer pagesize, Integer page, Integer likeId, String startDate, String endDate);

    /**
     * 倒序查待审核
     *
     * @param pagesize
     * @param page
     * @param likeId
     * @param startDate
     * @param endDate
     * @return
     */
    List<PublishInfo> queryWaitToCheck(Integer pagesize, Integer page, Integer likeId, String startDate, String endDate);

    /**
     * 倒序查已拒绝
     *
     * @param pagesize
     * @param page
     * @param likeId
     * @param startDate
     * @param endDate
     * @return
     */
    List<PublishInfo> queryRefusePublishInfo(Integer pagesize, Integer page, Integer likeId, String startDate, String endDate);

    /**
     * 查询计数
     *
     * @param code
     * @return
     */
    Integer queryTotal(Integer code);

    /**
     * 人工审核通过 5
     *
     * @param ids
     * @return
     */
    Integer passPublishByIds(List<String> ids);

    /**
     * 人工审核拒绝 4
     *
     * @param ids
     * @return
     */
    Integer rejectPublishByIds(List<String> ids);

    /**
     * 人工审核拒绝 3
     *
     * @param ids
     * @return
     */
    Integer revocationPublishByIds(List<String> ids);

    /**
     * 根据publishInfoId查询
     *
     * @param publishInfoId
     * @return
     */
    PublishInfo queryPublishInfoById(String publishInfoId);

    /**
     * 消息置顶 top 1
     *
     * @param publishInfoId
     * @return
     */
    Integer topPublishInfoById(String publishInfoId);

    /**
     * 消息取消置顶 top 2
     * @param publishInfoId
     * @return
     */
    Integer unTopPublishInfoById(String publishInfoId);

    /**
     * 计数该用户所有审核通过的消息
     *
     * @param userId
     * @return
     */
    Integer countAllPublishByUserId(String userId);

    /**
     * 查询所有选中的消息内容
     *
     * @param ids
     * @return
     */
    List<PublishInfo> queryPublishInfoByIds(List<String> ids);

    /**
     * 条件查询总条数
     *
     * @param code
     * @param likeId
     * @param startDate
     * @param endDate
     * @return
     */
    int queryCount(Integer code, Integer likeId, String startDate, String endDate);

    /**
     * 查全部publishInfo
     *
     * @return
     */
    List<PublishInfo> findAll();
}
